2部グラフは、multigraphが使いやすいようです。
(1) パソコンに、R、をダウンロードして、インストールする。
(2) multigraphをダウンロードして、Rのモジュールとして使えるようにしておく。
(3) Cドライブに「Rtest」というフォルダを作る。
(4) 1行目と1列目に、頂点の名前が書いてある数値データを、「Data.csv」というcsvファイルにして、「Rtest」フォルダに置く。
library(multigraph) # パッケージを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
DM <- read.csv("Data.csv", header=T, row.names=1) # データを読み込み。拡張子は、列名、行名の読み込み
bmgraph(DM) # グラフを作る
一番簡単な使い方では、データが0かどうかで線が引かれるため、値がいろいろあっても太さは同じになります。 値と太さを対応させたい時は、valuedを使います。
bmgraph(DM, valued = TRUE) # グラフを作る
レイアウトは様々なものが用意されています。
bmgraph(DM, valued = TRUE, layout = "bipc") # グラフを作る
デフォルトと左右が変わっています。
bmgraph(DM, valued = TRUE, layout = "circ") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "circ2") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "stress") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "CA") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "bip3") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "bip3e") # グラフを作る
bmgraph(DM, valued = TRUE, layout = "force", directed = TRUE) # グラフを作る
bmgraph(DM, valued = TRUE, layout = "rand", directed = TRUE) # グラフを作る
bmgraph(DM, valued = TRUE, fsize = 9, cex = 3, pch = c(15, 17), vcol = 3:2) # グラフを作る
igraphでも2部グラフが作れますが、少々手間が多いです。
library(igraph) # パッケージを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
DM <- read.csv("Data.csv", header=T, row.names=1) # データを読み込み。拡張子は、列名、行名の読み込み
DM.mat = as.matrix(DM) # データフレームを行列として読み込み
DM.g<-graph_from_incidence_matrix(DM.mat) # グラフ用のデータを作る
plot(DM.g, layout = layout_as_bipartite) # グラフを作る
一番簡単な使い方では、データが0かどうかで線が引かれるため、値がいろいろあっても太さは同じになります。 値と太さを対応させたい時は、valuedを使います。
DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite) # グラフを作る
DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
V(DM.g)$shape <- c("square", "circle")[V(DM.g)$type+1] # マークの形を変える
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite) # グラフを作る
DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite, vertex.shape="none", vertex.label.color=V(DM.g)$color) # グラフを作る
これはデフォルトのレイアウトです。 デフォルトのレイアウトとデフォルトのマークを使うと2部グラフかわかならいグラフになるため、ここではマークの色と形を変えています。
DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
V(DM.g)$shape <- c("square", "circle")[V(DM.g)$type+1] # マークの形を変える
plot(DM.g, edge.width=E(DM.g)$weight) # グラフを作る
CRANのマニュアルです。
すべての引数が書かれていますが、絵がありません。
https://cran.r-project.org/web/packages/multigraph/multigraph.pdf
配色の設定は、これを参考にさせていただきました。
https://github.com/mplex/multigraph
「Rで解析:ネットワーク図や2部グラフをプロット!!「multigraph」パッケージ」
数少ない日本語のページです。
https://www.karada-good.net/analyticsr/r-553
igraphの日本語による解説は多いですが、2部グラフについて書かれているものはあまりないようです。
https://kateto.net/wp-content/uploads/2018/06/Polnet%202018%20R%20Network%20Visualization%20Workshop.pdf